package com.peaksport.framework.extend.redis.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.cache.annotation.CacheEvict;
import org.springframework.core.annotation.AliasFor;

/**
 * 扩展说明：
 * 1. 扩展标准@CacheEvict
 * 2. 增加注解缓存有效时间
 * 3. 简化注解
 * 
 * 注解说明:慎用
 *   清除缓存数据,当allEntries=true时,删除相同cacheName下的所有缓存
 * 
 * 
 * @author jinbin_guo  2019年3月29日 下午4:12:29
 *
 */
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@CacheEvict(value="pkms_defaultCache")
public @interface PKCacheEvict {
	
	@AliasFor(annotation = CacheEvict.class)
	String condition() default "";

	@AliasFor(annotation = CacheEvict.class)
	boolean allEntries() default false;

	/** 缓存有效时间类型,必须从ExpireTimeType类中取值 */
	@AliasFor(annotation = CacheEvict.class,value="value")
	String expireTimeType() default "";
}
